package com.hn658.base.message.notification.notify.business;

import com.hn658.base.message.common.dto.NotificationDTO;
import com.hn658.base.message.common.enums.NotifyType;
import com.hn658.base.message.notification.notify.entity.NotificationEO;

/**
 * Created by baihai on 2015/11/26.
 */
public interface INotificationManager {


    NotificationEO find(String notifyId);

    NotificationEO save(NotificationEO notificationEO);

    void update(NotificationEO notification);

    /**
     * 发送消息，默认需要离线发送
     * @param notificationDTO 发送消息实体
     */
    void send(NotificationDTO notificationDTO);
    
    /**
     * 发送消息
     * @param notificationDTO 发送消息实体
     * @param isOfflineSend 是否离线发送
     */
    void send(NotificationDTO notificationDTO, boolean isOfflineSend);

    /**
     * 判断当前用户聊天对象是否相同（是否需要添加未读）
     * @param appId
     * @param uid
     * @param toId
     * @param type
     * @return
     */
    boolean currentTalk(String appId,String uid,String toId,NotifyType type);
    
    /**
     * 保存当前用户聊天对象缓存
     * @param appId
     * @param uid
     * @param toId
     * @param type
     */
    public void saveTalker(String appId,String uid,String toId,NotifyType type);
    /**
     * 获取用户选定会话未读消息数量
     * @param appId
     * @param uid
     * @param notifyId
     * @return
     */
    public int getUnReadCountByNotiId(String appId,String uid,String notifyId);
    
    /**
     * 设置用户选定会话未读消息数量
     * @param appId
     * @param uid
     * @param notifyId
     * @param count
     */
    public void saveUnReadCountByNotiId(String appId,String uid,String notifyId,int count);

}
